﻿// <com.woyouqiu.Copyright>
// --------------------------------------------------------------
// <copyright>上海有求网络科技有限公司 2015</copyright>
// <Solution>Vecen.BangChuang</Solution>
// <Project>Vecen.BangChuang.Core</Project>
// <FileName>ChargeCredential.cs</FileName>
// <CreateTime>2017-05-01 21:32</CreateTime>
// <Author>何苗</Author>
// <Email>hemiao@woyouqiu.com</Email>
// <log date="2017-05-01 21:32" version="00001">创建</log>
// --------------------------------------------------------------
// </com.woyouqiu.Copyright>

using System;
using System.ComponentModel.DataAnnotations;
using Abp.Domain.Entities.Auditing;

namespace Vecen.BangChuang.BangChuang.Pay {
    public class ChargeCredential: FullAuditedEntity<string> {

        /// <summary>
        /// 订单总金额（必须大于0）
        /// <remarks>
        /// 单位为对应币种的最小货币单位，人民币为分。如订单总金额为 1 元， amount 为 100，么么贷商户请查看申请的借贷金额范围
        /// </remarks>
        /// </summary>
        [Range(0, int.MaxValue)]
        public int? Amount { get; set; }

        /// <summary>
        /// 已退款总金额，单位为对应币种的最小货币单位，例如：人民币为分。
        /// </summary>
        public int? AmountRefunded { get; set; }

        /// <summary>
        /// 清算金额，单位为对应币种的最小货币单位，人民币为分。
        /// </summary>
        public int? AmountSettle { get; set; }

        /// <summary>
        /// 支付使用的  app 对象的  id
        /// </summary>
        public string App { get; set; }

        /// <summary>
        /// 商品描述信息，该参数最长为 128 个 Unicode 字符， 
        /// yeepay_wap 对于该参数长度限制为 100 个 Unicode 字符。
        /// </summary>
        public string Body { get; set; }

        /// <summary>
        /// 支付使用的第三方支付渠道
        /// <remarks>
        /// channel属性值	    支付渠道名称
        /// alipay	            支付宝 APP 支付
        /// alipay_wap	        支付宝手机网页支付
        /// alipay_pc_direct	支付宝电脑网站支付
        /// alipay_qr	        支付宝当面付，即支付宝扫码支付
        /// bfb	                百度钱包移动快捷支付，即百度钱包 APP 支付
        /// bfb_wap	            百度钱包手机网页支付
        /// cp_b2b	            银联企业网银支付，即 B2B 银联 PC 网页支付
        /// upacp	            银联支付，即银联 APP 支付（2015 年 1 月 1 日后的银联新商户使用。若有疑问，请与 Ping++ 或者相关的收单行联系）
        /// upacp_wap	        银联手机网页支付（2015 年 1 月 1 日后的银联新商户使用。若有疑问，请与 Ping++ 或者相关的收单行联系）
        /// upacp_pc	        银联网关支付，即银联 PC 网页支付
        /// wx	                微信 APP 支付
        /// wx_pub	            微信公众号支付
        /// wx_pub_qr	        微信公众号扫码支付
        /// wx_wap	            微信 WAP 支付（此渠道仅针对特定客户开放）
        /// wx_lite	            微信小程序支付
        /// yeepay_wap	        易宝手机网页支付
        /// jdpay_wap	        京东手机网页支付
        /// fqlpay_wap	        分期乐支付
        /// qgbc_wap	        量化派支付
        /// cmb_wallet	        招行一网通
        /// applepay_upacp	    Apple Pay
        /// mmdpay_wap	        么么贷
        /// qpay	            QQ 钱包支付
        /// </remarks>
        /// </summary>
        public string Channel { get; set; }

        /// <summary>
        /// 发起支付请求客户端的 IP 地址，格式为 IPv4 整型，如 127.0.0.1。
        /// </summary>
        public string ClientIp { get; set; }

        /// <summary>
        /// 支付创建时的 Unix 时间戳。
        /// </summary>
        public int? Created { get; set; }

        /// <summary>
        /// 3 位 ISO 货币代码，人民币为  cny 。
        /// </summary>
        public string Currency { get; set; }

        /// <summary>
        /// 订单附加说明，最多 255 个 Unicode 字符。
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// 订单的错误码，详见 错误 中的错误码描述。
        /// </summary>
        public string FailureCode { get; set; }

        /// <summary>
        /// 订单的错误消息的描述。
        /// </summary>
        public string FailureMsg { get; set; }


        /// <summary>
        /// 支付凭证，用于客户端发起支付。
        /// </summary>
        public string Credential { get; set; }

        /// <summary>
        /// 是否处于  live 模式。
        /// </summary>
        public bool Livemode { get; set; }

        /// <summary>
        ///     订单号
        ///     由于创建支付凭据时，每个订单号只能用一次
        ///     这里用实际订单号加当前时间，来创建凭据
        /// </summary>
        public string OrderNo { get; set; }

        /// <summary>
        ///     实际订单号
        /// </summary>
        public int RealOrderNo { get; set; }

        /// <summary>
        /// 是否已付款。
        /// </summary>
        public bool Paid { get; set; }

        /// <summary>
        /// 是否存在退款信息，无论退款是否成功。
        /// </summary>
        public bool Refunded { get; set; }

        /// <summary>
        /// 商品标题，该参数最长为 32 个 Unicode 字符，银联全渠道（ upacp / upacp_wap ）限制在 32 个字节。
        /// </summary>
        public string Subject { get; set; }

        /// <summary>
        /// 订单失效时的 Unix 时间戳。时间范围在订单创建后的 1 分钟到 15 天，默认为 1 天，创建时间以 Ping++ 服务器时间为准。 微信对该参数的有效值限制为 2 小时内；银联对该参数的有效值限制为 1 小时内。
        /// </summary>
        public int? TimeExpire { get; set; }

        /// <summary>
        /// 订单支付完成时的 Unix 时间戳。（银联支付成功时间为接收异步通知的时间）
        /// </summary>
        public int? TimePaid { get; set; }

        /// <summary>
        /// 订单清算时间，用 Unix 时间戳表示。（仅针对个人开发者）
        /// </summary>
        public int? TimeSettle { get; set; }

        /// <summary>
        /// 支付渠道返回的交易流水号。
        /// </summary>
        public string TransactionNo { get; set; }

        /// <summary>
        /// 订单回调时间
        /// </summary>
        public DateTime? CallbackTime { get; set; }
    }
}